Micron Document
πŸŽ–οΈGitΠ―Ρ€Π°πŸŽ–οΈ


Displaying Rendered β€’ View raw β€’ Download

specs/20260520-153412-nav-tab-labels/quickstart.md chore/remove-misplaced-docs-sync-workflow (1353ba25) Text, 2.34 KB

Quickstart: Nav Tab Labels Rename

Feature: Reorder Bottom Navigation Tab Labels
Date: 2026-05-20

Overview

This feature renames two T383838TopLevelDestination enum entries and their associated string resources to align with the Meshtastic cross-platform Menu Alignment Audit.

Implementation Steps (High-Level)

Step 1: Add String Resources

Add two new keys to T383838core/resources/src/commonMain/composeResources/values/strings.xml:
T282828
Tff7b72<string Te6edf3name=Ta5d6ff"connect"Tff7b72>ConnectTff7b72</string>
Tff7b72<string Te6edf3name=Ta5d6ff"messages"Tff7b72>MessagesTff7b72</string>


Then run: T383838python3 scripts/sort-strings.py

Step 2: Rename Enum Entries

In T383838core/navigation/src/commonMain/kotlin/org/meshtastic/core/navigation/TopLevelDestination.kt:
β€’ T383838Conversations(Res.string.conversations, ...) β†’ T383838Messages(Res.string.messages, ...)
β€’ T383838Connections(Res.string.connections, ...) β†’ T383838Connect(Res.string.connect, ...)

Update imports accordingly.

Step 3: Update All References

Files requiring mechanical rename of T383838TopLevelDestination.Conversations β†’ T383838.Messages and T383838.Connections β†’ T383838.Connect:

1. T383838core/ui/.../TopLevelDestinationExt.kt β€” icon T383838when branches
2. T383838core/ui/.../MeshtasticNavigationSuite.kt β€” any explicit references
3. T383838core/navigation/.../MultiBackstack.kt β€” default tab reference
4. T383838core/navigation/src/commonTest/.../MultiBackstackTest.kt β€” test setup
5. T383838androidApp/.../Main.kt β€” Android entry point
6. T383838desktopApp/.../Main.kt β€” Desktop entry point
7. T383838desktopApp/.../DesktopNavigation.kt β€” Desktop nav shell

Step 4: Verify

T282828
./gradlew spotlessApply spotlessCheck detekt assembleDebug Tffa657test allTests


Key Decisions

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Decision β”‚ Rationale β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ New string keys (not reusing old) β”‚ Old keys used as screen titles elsewhere β”‚
β”‚ Enum entry rename (not just label) β”‚ Code clarity + spec requirement β”‚
β”‚ No route changes β”‚ Preserves deep links & state restoration β”‚
β”‚ No localization changes β”‚ Deferred to Crowdin sync cycle β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Risks & Mitigations

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ Risk β”‚ Mitigation β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ Missed reference causes compile error β”‚ IDE rename refactoring + full T383838allTests build β”‚
β”‚ Ordinal shift breaks MultiBackstack β”‚ Entries stay in same position β€” order unchanged β”‚
β”‚ Localized users see English fallback β”‚ Expected behavior for new keys until Crowdin sync β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Served by rngit 1.5.0 - Generated in 0.04s